MongoDB একটি NoSQL ডাটাবেস, যেখানে ডেটা BSON (Binary JSON) ফরম্যাটে সংরক্ষিত হয় এবং এটি ডকুমেন্ট-ভিত্তিক ডাটাবেস। MongoDB তে CRUD অপারেশনগুলি (Create, Read, Update, Delete) Java এর মাধ্যমে কার্যকরী করা যায়। MongoDB Java Driver ব্যবহার করে আপনি এই অপারেশনগুলি সম্পাদন করতে পারেন।
নিচে MongoDB তে CRUD অপারেশন করার জন্য Java এর উদাহরণ দেওয়া হলো:
1. MongoDB তে Create অপারেশন (Insert)
MongoDB তে ডেটা ইনসার্ট করার জন্য insertOne() (একক ডকুমেন্ট ইনসার্ট করার জন্য) এবং insertMany() (একাধিক ডকুমেন্ট ইনসার্ট করার জন্য) মেথড ব্যবহার করা হয়।
Create Example: Insert একক ডকুমেন্ট
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class CreateExample {
public static void main(String[] args) {
// MongoDB কানেকশন তৈরি
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("mydb");
// Collection নির্বাচন বা তৈরি
MongoCollection<Document> collection = database.getCollection("users");
// ডকুমেন্ট তৈরি
Document doc = new Document("name", "Alice")
.append("age", 30)
.append("address", "123 Main St");
// ডকুমেন্ট ইনসার্ট করা
collection.insertOne(doc);
// MongoClient বন্ধ করা
mongoClient.close();
System.out.println("Document inserted successfully!");
}
}
2. MongoDB তে Read অপারেশন (Find)
MongoDB তে ডেটা রিট্রিভ করার জন্য find() মেথড ব্যবহার করা হয়। আপনি একটি নির্দিষ্ট ডকুমেন্ট অনুসন্ধান করতে বা সমস্ত ডকুমেন্ট রিট্রিভ করতে পারেন।
Read Example: Find একক বা সকল ডকুমেন্ট
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class ReadExample {
public static void main(String[] args) {
// MongoDB কানেকশন তৈরি
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("mydb");
// Collection নির্বাচন
MongoCollection<Document> collection = database.getCollection("users");
// সমস্ত ডকুমেন্ট রিট্রিভ করা
for (Document doc : collection.find()) {
System.out.println(doc.toJson());
}
// নির্দিষ্ট ডকুমেন্ট অনুসন্ধান করা (এখানে name = "Alice")
Document query = new Document("name", "Alice");
for (Document doc : collection.find(query)) {
System.out.println(doc.toJson());
}
// MongoClient বন্ধ করা
mongoClient.close();
}
}
find()মেথড দ্বারা আপনি সমস্ত ডকুমেন্ট রিট্রিভ করতে পারেন।find(query)মেথড দ্বারা নির্দিষ্ট শর্তে অনুসন্ধান করা যায়, যেমন এখানে"name": "Alice"দিয়ে অনুসন্ধান করা হয়েছে।
3. MongoDB তে Update অপারেশন (Update)
MongoDB তে ডেটা আপডেট করার জন্য updateOne() (একক ডকুমেন্ট আপডেট) এবং updateMany() (একাধিক ডকুমেন্ট আপডেট) মেথড ব্যবহার করা হয়।
Update Example: Update একক ডকুমেন্ট
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
public class UpdateExample {
public static void main(String[] args) {
// MongoDB কানেকশন তৈরি
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("mydb");
// Collection নির্বাচন
MongoCollection<Document> collection = database.getCollection("users");
// একক ডকুমেন্ট আপডেট করা (এখানে age আপডেট করা হয়েছে)
collection.updateOne(Filters.eq("name", "Alice"),
Updates.set("age", 31));
System.out.println("Document updated successfully!");
// MongoClient বন্ধ করা
mongoClient.close();
}
}
updateOne()মেথড দিয়ে আপনি একটি ডকুমেন্ট আপডেট করতে পারেন, যেখানে প্রথম প্যারামিটার হিসেবেFilters.eq()দিয়ে খোঁজ করা হয় এবং দ্বিতীয় প্যারামিটার হিসেবেUpdates.set()দিয়ে ডেটা আপডেট করা হয়।
4. MongoDB তে Delete অপারেশন (Delete)
MongoDB তে ডেটা মুছতে deleteOne() (একক ডকুমেন্ট মুছতে) এবং deleteMany() (একাধিক ডকুমেন্ট মুছতে) মেথড ব্যবহার করা হয়।
Delete Example: Delete একক ডকুমেন্ট
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.client.model.Filters;
public class DeleteExample {
public static void main(String[] args) {
// MongoDB কানেকশন তৈরি
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("mydb");
// Collection নির্বাচন
MongoCollection<Document> collection = database.getCollection("users");
// একক ডকুমেন্ট মুছা (এখানে name = "Alice")
collection.deleteOne(Filters.eq("name", "Alice"));
System.out.println("Document deleted successfully!");
// MongoClient বন্ধ করা
mongoClient.close();
}
}
deleteOne()মেথড দিয়ে একটি ডকুমেন্ট মুছতে পারবেন, যেখানেFilters.eq()দিয়ে শর্ত দেওয়া হয় (যেমন"name": "Alice").
Delete Many Example: Delete একাধিক ডকুমেন্ট
// একাধিক ডকুমেন্ট মুছতে deleteMany() ব্যবহার করা হয়।
collection.deleteMany(Filters.gt("age", 30)); // age 30 এর বেশি এমন সব ডকুমেন্ট মুছে ফেলবে
MongoDB তে CRUD অপারেশন: সারাংশ
| অপারেশন | MongoDB মেথড | ব্যাখ্যা |
|---|---|---|
| Create | insertOne(), insertMany() | নতুন ডকুমেন্ট ইনসার্ট করা। |
| Read | find(), findOne() | ডকুমেন্ট রিট্রিভ করা। |
| Update | updateOne(), updateMany() | ডকুমেন্ট আপডেট করা। |
| Delete | deleteOne(), deleteMany() | ডকুমেন্ট মুছা। |
MongoDB তে CRUD অপারেশনগুলি Java এর মাধ্যমে খুবই সহজ এবং কার্যকরীভাবে সম্পাদন করা যায়। MongoClient, MongoDatabase, এবং MongoCollection ক্লাস ব্যবহার করে আপনি MongoDB তে ডেটা ইনসার্ট, রিড, আপডেট এবং ডিলিট করতে পারেন। এগুলি MongoDB-তে ডেটা ম্যানিপুলেশন এবং পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ।
MongoDB তে ডকুমেন্ট ইনসার্ট করার জন্য insertOne() এবং insertMany() মেথড দুটি ব্যবহৃত হয়। insertOne() মেথড একটি একক ডকুমেন্ট ইনসার্ট করার জন্য এবং insertMany() মেথড একাধিক ডকুমেন্ট একসাথে ইনসার্ট করার জন্য ব্যবহৃত হয়।
MongoDB ডকুমেন্ট ইনসার্ট করতে Java-তে MongoDB Java Driver ব্যবহার করা হয়।
MongoDB তে insertOne() মেথড
insertOne() মেথড একক ডকুমেন্ট MongoDB তে ইনসার্ট করতে ব্যবহৃত হয়। এটি একক ডকুমেন্টকে MongoCollection তে সংরক্ষণ করে। যদি ডকুমেন্টটি সঠিকভাবে ইনসার্ট করা হয়, তবে এটি ইনসার্ট হওয়া ডকুমেন্টের _id প্রদান করবে।
insertOne() উদাহরণ:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoDBInsertOneExample {
public static void main(String[] args) {
// MongoDB connection
MongoClient mongoClient = new MongoClient("localhost", 27017);
// Access the database
MongoDatabase database = mongoClient.getDatabase("myDatabase");
// Access the collection
MongoCollection<Document> collection = database.getCollection("users");
// Create a new document
Document user = new Document("name", "John")
.append("age", 30)
.append("email", "john@example.com");
// Insert the document into the collection
collection.insertOne(user);
System.out.println("Document inserted successfully.");
// Close the connection
mongoClient.close();
}
}
ব্যাখ্যা:
insertOne()মেথডটি MongoDB তে একক ডকুমেন্ট ইনসার্ট করে।- এখানে
name,age, এবংemailফিল্ড সহ একটি ডকুমেন্ট ইনসার্ট করা হয়েছে।
MongoDB তে insertMany() মেথড
insertMany() মেথডটি একাধিক ডকুমেন্ট একসাথে MongoDB তে ইনসার্ট করার জন্য ব্যবহৃত হয়। এটি ডকুমেন্টের একটি তালিকা (List) গ্রহণ করে এবং একযোগে সমস্ত ডকুমেন্ট MongoDB তে ইনসার্ট করে।
insertMany() উদাহরণ:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.Arrays;
public class MongoDBInsertManyExample {
public static void main(String[] args) {
// MongoDB connection
MongoClient mongoClient = new MongoClient("localhost", 27017);
// Access the database
MongoDatabase database = mongoClient.getDatabase("myDatabase");
// Access the collection
MongoCollection<Document> collection = database.getCollection("users");
// Create multiple documents
Document user1 = new Document("name", "Alice")
.append("age", 25)
.append("email", "alice@example.com");
Document user2 = new Document("name", "Bob")
.append("age", 28)
.append("email", "bob@example.com");
Document user3 = new Document("name", "Charlie")
.append("age", 35)
.append("email", "charlie@example.com");
// Insert multiple documents into the collection
collection.insertMany(Arrays.asList(user1, user2, user3));
System.out.println("Multiple documents inserted successfully.");
// Close the connection
mongoClient.close();
}
}
ব্যাখ্যা:
insertMany()মেথডটি একাধিক ডকুমেন্ট ইনসার্ট করার জন্য ব্যবহৃত হয়।- এখানে তিনটি আলাদা ডকুমেন্ট তৈরি করা হয়েছে এবং
Arrays.asList()ব্যবহার করে সেগুলিকে একটি তালিকায় রূপান্তর করা হয়েছে, তারপরinsertMany()দ্বারা একযোগে MongoDB তে ইনসার্ট করা হয়েছে।
insertOne() এবং insertMany() এর মধ্যে পার্থক্য:
| মেথড | ব্যবহার | ইনসার্ট করার ডকুমেন্টের সংখ্যা |
|---|---|---|
| insertOne() | একক ডকুমেন্ট ইনসার্ট করার জন্য ব্যবহৃত হয় | একটি ডকুমেন্ট |
| insertMany() | একাধিক ডকুমেন্ট ইনসার্ট করার জন্য ব্যবহৃত হয় | একাধিক ডকুমেন্ট |
MongoDB-তে ইনসার্ট অপারেশনের সুবিধা:
- High Performance:
- MongoDB ইনসার্ট অপারেশনের জন্য খুব দ্রুত এবং কার্যকরী। এটি in-memory কাচিং এবং indexing ব্যবহার করে দ্রুত ডেটা সংরক্ষণ করতে পারে।
- Scalability:
- MongoDB ডিস্ট্রিবিউটেড ডাটাবেস, যার মাধ্যমে ডেটার আকার এবং লোড অনুযায়ী সহজে স্কেল করা যায়। Sharding এর মাধ্যমে MongoDB বৃহত্তর ডেটাবেসে পারফরম্যান্স বজায় রাখতে সক্ষম।
- Schema-less:
- MongoDB-তে schema-less ডেটা কাঠামো রয়েছে, যা অর্থাৎ একটি ডকুমেন্টের ফিল্ডের কাঠামো অন্য ডকুমেন্টের থেকে ভিন্ন হতে পারে। এর মাধ্যমে ডেটা মডেল ফ্লেক্সিবল এবং দ্রুত পরিবর্তনশীল হতে পারে।
- Atomic Operations:
- MongoDB তে ইনসার্ট অপারেশনগুলি atomic হয়ে থাকে, অর্থাৎ একাধিক ইনসার্ট অপারেশন একত্রে সম্পাদন করা হয় এবং যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে সবকটি অপারেশন বাতিল হয়ে যায়।
MongoDB তে ডকুমেন্ট ইনসার্ট করার জন্য insertOne() এবং insertMany() মেথড দুটি ব্যবহৃত হয়। insertOne() একক ডকুমেন্ট ইনসার্ট করার জন্য এবং insertMany() একাধিক ডকুমেন্ট ইনসার্ট করার জন্য ব্যবহৃত হয়। MongoDB দ্রুত পারফরম্যান্স, স্কেলেবিলিটি এবং ফ্লেক্সিবিলিটির জন্য জনপ্রিয় এবং এটি ডকুমেন্ট-ভিত্তিক ডেটা সংরক্ষণে অত্যন্ত কার্যকরী।
MongoDB Java-তে MongoDB Java Driver ব্যবহার করে ডাটাবেস থেকে ডকুমেন্ট পড়া (retrieve) সহজ এবং কার্যকরী। MongoDB-তে ডকুমেন্ট পড়তে আমরা দুটি প্রধান মেথড ব্যবহার করতে পারি:
find(): এটি MongoDB-এর একটি কোলেকশন থেকে একাধিক ডকুমেন্ট রিটার্ন করে।findOne(): এটি কেবলমাত্র একটি ডকুমেন্ট রিটার্ন করে (প্রথম মিল পাওয়া ডকুমেন্ট)।
এখন আসুন, এই দুইটি মেথডের ব্যবহারের উদাহরণ দেখি।
1. find() মেথড:
find() মেথড MongoDB-র Collection থেকে একাধিক ডকুমেন্ট রিটার্ন করে। এটি সাধারণত ফিল্টারিং ও কন্ডিশন প্রয়োগ করে ব্যবহার করা হয়।
find() এর Syntax:
FindIterable<Document> find();
FindIterable<Document> find(Bson filter);
find(): এটি সমস্ত ডকুমেন্ট রিটার্ন করে।find(Bson filter): এটি একটি BSON ফিল্টার প্যারামিটার নেয়, যা কেবল নির্দিষ্ট শর্ত পূর্ণকারী ডকুমেন্টগুলো রিটার্ন করবে।
find() মেথডের উদাহরণ:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.Iterator;
public class MongoFindExample {
public static void main(String[] args) {
// MongoClient তৈরি করা
MongoClient mongoClient = new MongoClient("localhost", 27017);
// ডেটাবেস নির্বাচন করা
MongoDatabase database = mongoClient.getDatabase("testDatabase");
// কোলেকশন নির্বাচন করা
MongoCollection<Document> collection = database.getCollection("students");
// সমস্ত ডকুমেন্ট খুঁজে বের করা
Iterator<Document> cursor = collection.find().iterator();
// ডকুমেন্টগুলো প্রিন্ট করা
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
// MongoClient বন্ধ করা
mongoClient.close();
}
}
ব্যাখ্যা:
find()মেথডটিstudentsকোলেকশনের সব ডকুমেন্ট রিটার্ন করে এবংiterator()মেথডের মাধ্যমে তাদের প্রিন্ট করা হয়।
2. findOne() মেথড:
findOne() মেথড কেবল একটি ডকুমেন্ট রিটার্ন করে (যেটি প্রথমে মেলে)। এটি বিশেষভাবে সেই ক্ষেত্রে ব্যবহৃত হয় যখন আপনি একক ডকুমেন্ট পেতে চান, যেমন ইউজারের ID অনুসারে একটি ডকুমেন্ট খোঁজা।
findOne() এর Syntax:
Document findOne();
Document findOne(Bson filter);
findOne(): এটি প্রথম ডকুমেন্ট রিটার্ন করে।findOne(Bson filter): এটি ফিল্টার প্যারামিটার হিসেবে একটি BSON শর্ত নেয় এবং শর্ত পূর্ণকারী প্রথম ডকুমেন্ট রিটার্ন করে।
findOne() মেথডের উদাহরণ:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoFindOneExample {
public static void main(String[] args) {
// MongoClient তৈরি করা
MongoClient mongoClient = new MongoClient("localhost", 27017);
// ডেটাবেস নির্বাচন করা
MongoDatabase database = mongoClient.getDatabase("testDatabase");
// কোলেকশন নির্বাচন করা
MongoCollection<Document> collection = database.getCollection("students");
// একটি ডকুমেন্ট খুঁজে বের করা
Document student = collection.find().first(); // প্রথম ডকুমেন্ট রিটার্ন
// ডকুমেন্ট প্রিন্ট করা
if (student != null) {
System.out.println(student.toJson());
} else {
System.out.println("No document found");
}
// MongoClient বন্ধ করা
mongoClient.close();
}
}
ব্যাখ্যা:
find().first()ব্যবহার করা হয়েছে যাতে প্রথম ডকুমেন্টটি রিটার্ন করা হয়।- এই কোডটি students কোলেকশন থেকে প্রথম ডকুমেন্ট বের করে এবং তার JSON ফর্ম্যাটে আউটপুট দেখায়।
3. find() এবং findOne() এর মধ্যে পার্থক্য:
| মেথড | ফাংশন | ফলাফল |
|---|---|---|
find() | একাধিক ডকুমেন্ট রিটার্ন করে। | একটি কোলেকশন থেকে সব ডকুমেন্ট রিটার্ন করে। |
findOne() | প্রথম ম্যাচ হওয়া একটিমাত্র ডকুমেন্ট রিটার্ন করে। | কেবল একটি ডকুমেন্ট রিটার্ন করে। |
4. find() এবং findOne() এর সাথে ফিল্টার ব্যবহার:
MongoDB-তে আপনি find() এবং findOne() মেথডে ফিল্টার ব্যবহার করে নির্দিষ্ট ডকুমেন্ট খুঁজে পেতে পারেন। ফিল্টার একটি BSON অবজেক্ট হয়, যা শর্ত জানায় কেমন ডকুমেন্ট খুঁজতে হবে।
find() এবং findOne() ফিল্টার সহ ব্যবহার:
find() with filter:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoFindWithFilterExample {
public static void main(String[] args) {
// MongoClient তৈরি করা
MongoClient mongoClient = new MongoClient("localhost", 27017);
// ডেটাবেস নির্বাচন করা
MongoDatabase database = mongoClient.getDatabase("testDatabase");
// কোলেকশন নির্বাচন করা
MongoCollection<Document> collection = database.getCollection("students");
// filter তৈরি করা
Document filter = new Document("age", 25); // age 25 এর সকল স্টুডেন্ট খুঁজবে
// filter দিয়ে find() মেথড ব্যবহার করা
for (Document doc : collection.find(filter)) {
System.out.println(doc.toJson());
}
// MongoClient বন্ধ করা
mongoClient.close();
}
}
findOne() with filter:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoFindOneWithFilterExample {
public static void main(String[] args) {
// MongoClient তৈরি করা
MongoClient mongoClient = new MongoClient("localhost", 27017);
// ডেটাবেস নির্বাচন করা
MongoDatabase database = mongoClient.getDatabase("testDatabase");
// কোলেকশন নির্বাচন করা
MongoCollection<Document> collection = database.getCollection("students");
// filter তৈরি করা
Document filter = new Document("name", "John");
// filter দিয়ে findOne() মেথড ব্যবহার করা
Document student = collection.find(filter).first();
// ডকুমেন্ট প্রিন্ট করা
if (student != null) {
System.out.println(student.toJson());
} else {
System.out.println("No document found");
}
// MongoClient বন্ধ করা
mongoClient.close();
}
}
ব্যাখ্যা:
find()এবংfindOne()মেথডে BSON filter ব্যবহার করে শর্ত অনুসারে ডকুমেন্ট খোঁজা যায়। উদাহরণস্বরূপ, আমরা age বা name-এর মাধ্যমে নির্দিষ্ট ডকুমেন্ট খুঁজে বের করেছি।
find()এবংfindOne()MongoDB-তে ডকুমেন্ট রিড করার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ মেথড।find()একাধিক ডকুমেন্ট রিটার্ন করে, যখনfindOne()কেবল প্রথম ম্যাচ হওয়া একটিমাত্র ডকুমেন্ট রিটার্ন করে।- আপনি BSON filter ব্যবহার করে নির্দিষ্ট শর্ত অনুসারে ডকুমেন্ট খুঁজে পেতে পারেন।
- এই মেথডগুলো MongoDB ড্রাইভারের সাহায্যে Java অ্যাপ্লিকেশনগুলিতে MongoDB ডাটাবেসের সাথে কার্যকরীভাবে ইন্টারঅ্যাক্ট করতে সহায়ক।
MongoDB-তে ডকুমেন্ট আপডেট করতে Java MongoDB Driver এর মধ্যে updateOne() এবং updateMany() মেথড দুটি ব্যবহৃত হয়। এই মেথডগুলো MongoDB কোলেকশনে এক বা একাধিক ডকুমেন্ট আপডেট করতে সহায়তা করে। তাদের ব্যবহার এবং কার্যকারিতা বুঝতে, আমরা প্রতিটি মেথডের ব্যবহার দেখবো।
1. updateOne() মেথড:
updateOne() মেথডটি একটি নির্দিষ্ট ডকুমেন্ট আপডেট করতে ব্যবহৃত হয় যা একটি কন্ডিশন মেট করে। এটি কেবল একটি ডকুমেন্টকে আপডেট করে, এমনকি যদি কন্ডিশন অনুযায়ী একাধিক ডকুমেন্ট মিলে থাকে তবুও শুধু প্রথমটি আপডেট করা হয়।
updateOne() মেথডের সিনট্যাক্স:
collection.updateOne(
filter, // A filter to specify the document to update
update, // The update operation to apply
options // Optional settings for the update operation
);
filter: যে ডকুমেন্টটি আপডেট করতে হবে, তার শর্ত।update: যে পরিবর্তন বা আপডেট প্রযোজ্য হবে।options: এটি ঐচ্ছিক। বিশেষ অপশন যেমনupsert(যদি ডকুমেন্ট না পাওয়া যায়, তবে একটি নতুন ডকুমেন্ট তৈরি হবে)।
উদাহরণ:
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoUpdateOneExample {
public static void main(String[] args) {
// MongoDB client setup
var mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection<Document> collection = database.getCollection("users");
// Filter to find a specific document
Document filter = new Document("name", "John Doe");
// The update operation to change the age
Document update = new Document("$set", new Document("age", 35));
// Update the document
collection.updateOne(filter, update);
System.out.println("Document updated successfully!");
}
}
ব্যাখ্যা:
- এই উদাহরণে,
"name": "John Doe"শর্তে প্রথম মেলানো ডকুমেন্টেরageফিল্ডকে 35 এ আপডেট করা হয়েছে। $setঅপারেটর MongoDB-তে ডকুমেন্টের একটি বা একাধিক ফিল্ড আপডেট করার জন্য ব্যবহৃত হয়।
2. updateMany() মেথড:
updateMany() মেথডটি কোলেকশনের সকল ডকুমেন্ট আপডেট করতে ব্যবহৃত হয় যা একটি নির্দিষ্ট কন্ডিশন মেনে চলে। এটি একাধিক ডকুমেন্ট আপডেট করে, যেগুলি নির্দিষ্ট ফিল্টার কন্ডিশন মেটায়।
updateMany() মেথডের সিনট্যাক্স:
collection.updateMany(
filter, // A filter to specify the documents to update
update, // The update operation to apply
options // Optional settings for the update operation
);
filter: যে ডকুমেন্টগুলিকে আপডেট করতে হবে, তার শর্ত।update: যে পরিবর্তন বা আপডেট প্রযোজ্য হবে।options: এটি ঐচ্ছিক। এখানেupsertঅপশনটি দেওয়া যেতে পারে, যা যদি কোনো ডকুমেন্ট না পাওয়া যায়, তবে নতুন ডকুমেন্ট তৈরি করবে।
উদাহরণ:
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoUpdateManyExample {
public static void main(String[] args) {
// MongoDB client setup
var mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection<Document> collection = database.getCollection("users");
// Filter to find all users older than 30
Document filter = new Document("age", new Document("$gt", 30));
// The update operation to set "status" to "active"
Document update = new Document("$set", new Document("status", "active"));
// Update all matching documents
collection.updateMany(filter, update);
System.out.println("Documents updated successfully!");
}
}
ব্যাখ্যা:
- এই উদাহরণে,
age > 30শর্তে সকল মেলানো ডকুমেন্টের"status"ফিল্ডকে"active"এ আপডেট করা হয়েছে। $setঅপারেটর ব্যবহৃত হয়েছে যাতে ডকুমেন্টের"status"ফিল্ড আপডেট হয়।
updateOne() এবং updateMany() এর মধ্যে পার্থক্য:
| মেথড | কাজ | উপযুক্ত ব্যবহার |
|---|---|---|
updateOne() | শুধুমাত্র একটি ডকুমেন্ট আপডেট করে যা শর্ত পূর্ণ করে | যখন এক বা একাধিক শর্তের মধ্যে প্রথম ডকুমেন্ট আপডেট করতে চান |
updateMany() | একাধিক ডকুমেন্ট আপডেট করে যা শর্ত পূর্ণ করে | যখন একাধিক ডকুমেন্ট আপডেট করতে চান |
3. Additional Features:
- Upsert:
upsertঅপশন দিয়ে আপনি MongoDB-তে ডকুমেন্ট না পাওয়া গেলে নতুন ডকুমেন্ট তৈরি করতে পারেন।upsertব্যবহার করতে হলেupdateOne()বাupdateMany()মেথডের সাথেnew UpdateOptions().upsert(true)ব্যবহার করা হয়।
collection.updateOne(
new Document("name", "Jane Doe"),
new Document("$set", new Document("age", 25)),
new UpdateOptions().upsert(true)
);
- Atomicity:
- MongoDB-তে
updateOne()এবংupdateMany()মেথডগুলো অ্যাটমিক ট্রানজেকশনের মতো কাজ করে, অর্থাৎ যদি একাধিক ডকুমেন্ট আপডেট করা হয় তবে এটি সম্পূর্ণ হবে বা পুরোপুরি ব্যর্থ হবে।
- MongoDB-তে
MongoDB-তে updateOne() এবং updateMany() মেথডগুলো গুরুত্বপূর্ণ এবং প্রতিদিনের ডাটাবেস ম্যানিপুলেশনে খুবই কার্যকরী। updateOne() একটি ডকুমেন্ট আপডেট করে, এবং updateMany() একাধিক ডকুমেন্ট আপডেট করে, যা বড় ডেটাসেটে কাজ করার সময় সময় ও সংস্থান সাশ্রয়ী হয়। আপনি এই মেথডগুলোকে MongoDB-তে ডাটা আপডেটের সময় দক্ষভাবে ব্যবহার করতে পারেন, বিশেষত যখন আপনি ডেটার বড় ভলিউম আপডেট করতে চান।
MongoDB তে ডকুমেন্ট মুছে ফেলার জন্য deleteOne() এবং deleteMany() মেথড ব্যবহৃত হয়। deleteOne() একটী ডকুমেন্ট মুছে ফেলে, যখন deleteMany() একাধিক ডকুমেন্ট মুছে ফেলে, যেগুলি একটি নির্দিষ্ট শর্তের সাথে মেলে। এই অপারেশনগুলো MongoCollection ক্লাসের মেথড হিসেবে উপলব্ধ।
এখানে, MongoDB ডকুমেন্ট মুছতে Java MongoDB Driver ব্যবহার করার উদাহরণ দেওয়া হলো।
1. deleteOne() মেথড
deleteOne() মেথডটি একক ডকুমেন্ট মুছে ফেলে যেটি একটি নির্দিষ্ট ফিল্টারের সাথে মেলে।
deleteOne() উদাহরণ:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
public class DeleteOneExample {
public static void main(String[] args) {
// MongoDB সার্ভারে সংযোগ স্থাপন করা
MongoClient mongoClient = new MongoClient("localhost", 27017);
// ডাটাবেস নির্বাচন করা
MongoDatabase database = mongoClient.getDatabase("mydatabase");
// কোলেকশন নির্বাচন করা
MongoCollection<Document> collection = database.getCollection("users");
// deleteOne() ব্যবহার করে একটি ডকুমেন্ট মুছে ফেলা
collection.deleteOne(new Document("name", "John Doe"));
System.out.println("Document deleted successfully!");
// MongoClient বন্ধ করা
mongoClient.close();
}
}
ব্যাখ্যা:
collection.deleteOne(new Document("name", "John Doe"))এই লাইনে "name" এর মান "John Doe" এমন একটী ডকুমেন্ট মুছে ফেলা হচ্ছে। যদি একাধিক ডকুমেন্ট থাকে, তবে এটি প্রথম মিল পাওয়া ডকুমেন্টটি মুছে ফেলবে।
2. deleteMany() মেথড
deleteMany() মেথডটি একাধিক ডকুমেন্ট মুছে ফেলে, যেগুলি নির্দিষ্ট ফিল্টারের সাথে মেলে।
deleteMany() উদাহরণ:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
public class DeleteManyExample {
public static void main(String[] args) {
// MongoDB সার্ভারে সংযোগ স্থাপন করা
MongoClient mongoClient = new MongoClient("localhost", 27017);
// ডাটাবেস নির্বাচন করা
MongoDatabase database = mongoClient.getDatabase("mydatabase");
// কোলেকশন নির্বাচন করা
MongoCollection<Document> collection = database.getCollection("users");
// deleteMany() ব্যবহার করে একাধিক ডকুমেন্ট মুছে ফেলা
collection.deleteMany(new Document("age", new Document("$lt", 30))); // Age < 30
System.out.println("Documents deleted successfully!");
// MongoClient বন্ধ করা
mongoClient.close();
}
}
ব্যাখ্যা:
collection.deleteMany(new Document("age", new Document("$lt", 30)))এই লাইনেageএর মান ৩০ এর চেয়ে কম এমন সমস্ত ডকুমেন্ট মুছে ফেলা হচ্ছে।- এখানে
$ltঅপারেটর ব্যবহার করা হয়েছে, যা "less than" (ছোট) অর্থে কাজ করে। MongoDB তে বিভিন্ন ধরনের comparison operators ব্যবহার করে ডকুমেন্ট মুছে ফেলা যায়, যেমন$gt(greater than),$eq(equal),$ne(not equal) ইত্যাদি।
3. deleteOne() এবং deleteMany() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | deleteOne() | deleteMany() |
|---|---|---|
| কাজ | একটি ডকুমেন্ট মুছে ফেলে যা নির্দিষ্ট ফিল্টারের সাথে মেলে। | একাধিক ডকুমেন্ট মুছে ফেলে যা নির্দিষ্ট ফিল্টারের সাথে মেলে। |
| ডকুমেন্ট সংখ্যা | একটি ডকুমেন্ট মুছে ফেলা হয়। | একাধিক ডকুমেন্ট মুছে ফেলা হয়। |
| ফিল্টার | প্রথম মেলানো ডকুমেন্ট মুছে ফেলা হয়। | সব মেলানো ডকুমেন্ট মুছে ফেলা হয়। |
4. MongoDB তে Delete Operation সম্পর্কিত কিছু গুরুত্বপূর্ণ نکات:
- Atomic Operations: MongoDB তে
deleteOne()এবংdeleteMany()অপারেশনগুলি atomic (একক থ্রেডে সম্পন্ন) হয়, অর্থাৎ একে একে একাধিক ডকুমেন্টের জন্য অপারেশন চলবে। - Filters: ডকুমেন্ট মুছে ফেলার সময় সঠিক filter ব্যবহার করুন, যেন আপনি ঠিক সেই ডকুমেন্টগুলি মুছতে পারেন যা আপনি চান। অন্যথায় ভুল ডকুমেন্ট মুছে ফেলতে পারেন।
- Indexing: যদি আপনি খুব বড় collection তে
deleteMany()অপারেশন চালান, তবে indexing এর সাহায্যে পারফরম্যান্স উন্নত করতে পারেন। - Backup Consideration: MongoDB তে ডকুমেন্ট একবার মুছে ফেললে তা পুনরুদ্ধার করা সম্ভব নয়। তাই ডকুমেন্ট মুছে ফেলার আগে backup নেওয়া উচিত।
deleteMany()এর Performance: বড় collection বা large number of documents মুছলে পারফরম্যান্স প্রভাবিত হতে পারে। MongoDB এ batch processing বা bulk operations ব্যবহার করে পারফরম্যান্স উন্নত করা যেতে পারে।
MongoDB তে ডকুমেন্ট মুছতে deleteOne() এবং deleteMany() মেথড ব্যবহার করা হয়, যা খুবই কার্যকরী। deleteOne() একটি ডকুমেন্ট মুছে ফেলে, যেখানে deleteMany() একাধিক ডকুমেন্ট মুছে ফেলে। MongoDB তে এই অপারেশনগুলো দ্রুত সম্পাদিত হয়, তবে filter সঠিকভাবে ব্যবহার করা উচিত যাতে সঠিক ডকুমেন্টগুলি মুছে ফেলা যায় এবং ভুল ডেটা মুছে ফেলার ঝুঁকি এড়ানো যায়।
Read more